package ace.module.account.api.model.auth.input;

import ace.module.account.api.model.auth.AuthenticationGrantType;
import jakarta.annotation.Nullable;
import java.util.Map;

/**
 * @author caspar
 * @date 2023/10/23 15:07
 */
public interface GenericAuthenticationInput<TParams extends AuthenticationParams>
    extends AuthenticationInput {
  /**
   * 客户端id
   */
  String getIdOfClient();

  /**
   * 认证方法
   * {@link AuthenticationGrantType#getCode()}
   */
  String getGrantType();

  /**
   * 账户应用id
   */
  Long getIamAppId();

  /**
   * 账户标签,可选
   */
  @Nullable
  String getTag();

  /**
   * 认证参数
   */
  TParams getBizParams();

  /**
   * 扩展参数
   */
  Map<String, Object> getAdditionalParameters();
}
